package cqrtplm.mapper;

import cqrtplm.entity.RtZdDbDO;
import cqrtplm.entity.RtZdMxbDO;
import cqrtplm.entity.RtZdSqbDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface RtZdMapper {

    // ========== 申请单相关操作 ==========

    /**
     * 查询申请单列表
     */
    List<RtZdSqbDO> querySqb(Map<String, Object> params);

    /**
     * 根据KID查询申请单
     */
    RtZdSqbDO getSqbByKid(@Param("kid") String kid);

    /**
     * 新增申请单
     */
    int insertSqb(RtZdSqbDO sqb);

    /**
     * 更新申请单
     */
    int updateSqb(RtZdSqbDO sqb);

    /**
     * 删除申请单
     */
    int deleteSqb(@Param("kid") String kid);

    // ========== 指定底表相关操作 ==========

    /**
     * 根据MainKID查询底表数据
     */
    List<RtZdDbDO> getDbByMainKid(@Param("mainKid") String mainKid);

    /**
     * 查询底表数据
     */
    List<RtZdDbDO> queryDb(Map<String, Object> params);

    /**
     * 新增底表数据
     */
    int insertDb(RtZdDbDO db);

    /**
     * 更新底表数据
     */
    int updateDb(RtZdDbDO db);

    /**
     * 删除底表数据
     */
    int deleteDb(@Param("aid") String aid);

    /**
     * 根据MainKID删除底表数据
     */
    int deleteDbByMainKid(@Param("mainKid") String mainKid);

    // ========== 指定明细表相关操作 ==========

    /**
     * 根据MainID查询明细表数据
     */
    List<RtZdMxbDO> getMxbByMainId(@Param("mainId") String mainId);

    /**
     * 查询明细表数据
     */
    List<RtZdMxbDO> queryMxb(Map<String, Object> params);

    /**
     * 新增明细表数据
     */
    int insertMxb(RtZdMxbDO mxb);

    /**
     * 更新明细表数据
     */
    int updateMxb(RtZdMxbDO mxb);

    /**
     * 删除明细表数据
     */
    int deleteMxb(@Param("detailId") String detailId);

    /**
     * 根据MainID删除明细表数据
     */
    int deleteMxbByMainId(@Param("mainId") String mainId);


    /**
     * 根据materialcode查找指定信息
     */
    List<RtZdMxbDO> selectByMaterialcode(@Param("materialcode") String materialcode);

    /**
     * 根据物料码、开发令、客户查询指定
     */
    List<RtZdMxbDO> selectMxbByPartAndDevAndCusAndFactory(@Param("materialcode") String materialcode,
                                                          @Param("devcode") String devcode,
                                                          @Param("customername") String customername,
                                                          @Param("factory") String factory);

    /**
     * 根据物料码、开发令、客户、工厂查询指定申请表
     */
    List<RtZdSqbDO> selectSqbByPartAndDevAndCusAndFactory(@Param("materialcode") String materialcode,
                                                          @Param("devcode") String devcode,
                                                          @Param("customername") String customername,
                                                          @Param("factory") String factory);

    /**
     * 根据物料码、开发令、客户、工厂查询指定底表
     */
    List<RtZdDbDO> selectDbByPartAndDevAndCusAndFactory(@Param("materialcode") String materialcode,
                                                        @Param("devcode") String devcode,
                                                        @Param("customername") String customername,
                                                        @Param("factory") String factory);

    /**
     * 根据物料码、工厂查询指定
     */
    List<RtZdMxbDO> selectMxbByPartAndFactory(@Param("materialcode") String materialcode,
                                              @Param("factory") String factory);

    RtZdDbDO updateDbByPartAndDevAndCusAndFactory(@Param("materialcode") String materialcode,
                                                  @Param("devcode") String devcode,
                                                  @Param("customername") String customername,
                                                  @Param("factory") String factory);

    Integer selectExist(@Param("var1") String input68758,@Param("var2") String input75631,@Param("var3") String input66947,@Param("var4") String input80487);

    void updateStatus(@Param("var1") String input68758,@Param("var2") String input75631,@Param("var3") String input66947,@Param("var4") String input80487);

    Integer checkExist(@Param("var1") String var1,@Param("var2") String var2,@Param("var3") String var3,@Param("var4") String var4,@Param("var5") String var5,@Param("var6") String var6,@Param("var7") String var7);

    void updateStatus1(@Param("var1")String input68758,@Param("var2") String input75631,@Param("var3") String input66947,@Param("var4")  String input80487);

    List<String> selectFormIds(@Param("var1")String var1,@Param("var2")String var2,@Param("var3")String var3,@Param("var4")String var4,@Param("var5")String var5);
}